package top.doe.spark.deploy

import top.doe.spark.rpc.{RpcEndpoint, RpcEnv}

class Master(
  val rpcEnv: RpcEnv
) extends RpcEndpoint {


  override def onStart(): Unit = {
    println("onStart方法被调用了！！！")
  }

  //接送消息，并进行模式匹配，然后调用相应的方法
  override def receive: PartialFunction[Any, Unit] = {
    case "test" => {
      println(666)
    }
  }
}

object Master {

  def main(args: Array[String]): Unit = {

    val host = "localhost"
    val port = 8888
    //1.创建RpcEnv
    val rpcEnv = RpcEnv.create("SparkMaster", host, port)

    //2.创建RpcEndpoint（Master）
    val master = new Master(rpcEnv)

    //3.将创建好的RpcEndpoint使用RpcEnv进行注册
    val endpointRef = rpcEnv.setupEndpoint("Master", master)

    //4.自己给自己发消息
    endpointRef.send("test")


  }

}
